package com.sugon.entity;

import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.sugon.validator.group.AddGroup;
import com.sugon.validator.group.UpdateGroup;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;

import java.io.Serializable;
import java.util.List;

/**
 * 系统用户
 *
 * @author lipengjun
 * @date 2017年11月18日 下午13:13:23
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
public class SysUserEntity extends BaseEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */
    private String userId;

    /**
     * 用户名
     */
    @NotBlank(message = "用户名不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String userName;

    /**
     * 用户姓名
     */
    @NotBlank(message = "用户姓名不能为空", groups = {AddGroup.class, UpdateGroup.class})
    private String nickName;

    /**
     * 密码
     */
    private transient String passWord;

    /**
     * 所属部门
     */
    private String deptId;

    /**
     * 状态  0：禁用   1：正常
     */
    private Integer status;

    /**
     * 状态  0：否   1：是
     */
    private Integer special;

    /**
     * 角色ID列表
     */
    private List<String> roleIdList;

    /**
     * 部门名称
     */
    private String deptName;

    /**
     * 所属车间 只存储车间ID
     */
    private String deptCode;

    private Integer leader;

    /**
     * 用户登录的移动APP端ID
     * 每次用户登录新的设备后，后登录的clientId会覆盖之前的clientId
     */
    private String clientId;

    /**
     * 删除标识，取值自：CommonConstant.DEL_FLAG_1
     * 未删除：1
     * 已删除：0
     */
    private Integer delFlag;

    /**
     * 长安统一认证中心用户数据库中的用户ID，全球唯一
     * 格式为：be5706c1-c359-438d-a8c9-e9a0161c99c7
     */
    private String unionId;

    public String getDeptId() {
        return deptId == null ? "" : deptId;
    }

    /**
     * 获取用户所在车间ID
     *
     * @return
     */
    public String getWorkShopId() {
        String deptId = getDeptId();
        if (StrUtil.isNotEmpty(deptId) && deptId.length() >= 4) {
            return deptId.substring(0, 4);
        } else {
            return deptId;
        }
    }

}
